package com.mzx.javase.thread.yield;

/**
 * 类描述：yield，线程让步，意思就是，让当前线程放弃cpu执行权(时间片)，由运行状态回到就绪状态，继续拥有抢夺cpu时间片的权力
 * 所以调用了线程让步方法，并不会百分之百让步其他线程执行；而是和其他线程一样继续抢夺cpu执行权，jvm的线程调度方式是抢占式调度
 *
 * @ClassName YieldDemo
 * @Description TODO
 * @Author 马子鑫
 * @Date 2022/8/3 16:07
 * @Version 1.0
 */

public class YieldDemo {
    public static void main(String[] args) {
        YieldThread yieldThread = new YieldThread("新加入的线程");
        yieldThread.start();

        for (int i = 0; i < 10; i++) {
            System.out.println("主线程第" + i + "次循环");
        }
    }
}

class YieldThread extends Thread{
    public YieldThread(String name) {
        super(name);
    }
    @Override
    public void run() {
        System.out.println(Thread.currentThread().getName() + "线程开始运行..");
        for (int i = 0; i < 10; i++) {
            System.out.println(Thread.currentThread().getName() + "运行到了第" + i + "次");
            Thread.yield();//当前线程放弃cpu执行权重新进入到就绪状态去抢夺cpu时间片
        }
        System.out.println(Thread.currentThread().getName() + "线程运行结束..");
    }
}
